package org.android.brasil.projetos.oktoberfest2011.persistencia.parse;

import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.android.brasil.projetos.oktoberfest2011.negocio.model.Agenda;
import org.android.brasil.projetos.oktoberfest2011.negocio.model.Evento;
import org.android.brasil.projetos.oktoberfest2011.negocio.model.Setor;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 * 
 * @author melhortimesanta@gmail.com
 * 
 */
public class LerXML {

	private String xmlPathName;

	public void processarXml() throws SAXException, IOException,
			ParserConfigurationException {

		URL url = new URL(
				"http://www.oktoberfestblumenau.com.br/appandroid.xml");

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		Document doc = db.parse(new InputSource(url.openStream()));
		doc.getDocumentElement().normalize();

		NodeList nodeDia = doc.getElementsByTagName("dia");
		NodeList nodeSetor = doc.getElementsByTagName("setor");
		NodeList nodeEvento = doc.getElementsByTagName("evento");

		List<Agenda> eventosAgenda = new ArrayList<Agenda>();

		for (int i = 0; i < nodeDia.getLength(); i++) {

			Agenda eventoAgenda = new Agenda();
			Setor setor = new Setor();
			Evento evento = new Evento();
			List<Evento> eventos = new ArrayList<Evento>();

			Element tagDia = (Element) nodeDia.item(i);
			Element tagSetor = (Element) nodeSetor.item(i);
			Node nodeSetorAtual = nodeSetor.item(i);
			

			// Carrega os dados vindo do XML.
			eventoAgenda.setData(tagDia.getAttribute("data"));
			eventoAgenda.setAbertura(tagDia.getAttribute("abertura"));
			eventoAgenda.setEncerramento(tagDia.getAttribute("encerramento"));
			setor.setNome(tagSetor.getAttribute("nome"));

			for (int j = 1; j < nodeSetorAtual.getChildNodes().getLength(); j++) {
				
				Element tagEvento = (Element) nodeSetorAtual.getChildNodes().item(j);
				evento.setDescricao(tagEvento.getAttribute("descricao"));
				evento.setInicio(tagEvento.getAttribute("inicio"));
				eventos.add(evento);
				
			}
			setor.setEventos(eventos);
			eventoAgenda.setSetor(setor);
			eventosAgenda.add(eventoAgenda);

		}

	}

	public String getXmlPathName() {
		return xmlPathName;
	}

	public void setXmlPathName(String xmlPathName) {
		this.xmlPathName = xmlPathName;
	}
}
